/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package demo.thread;

import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author VANDH
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws InterruptedException {
        IntegerWrap count = new IntegerWrap(0);

        TinhSNT tinhSNT = new TinhSNT();
        tinhSNT.n = 10;
        tinhSNT.count = count;
        tinhSNT.start();

        TinhFibo tinhFibo = new TinhFibo();
        tinhFibo.n = 10;
        tinhFibo.count = count;
        tinhFibo.start();

        System.out.println("Tinh Fibo is alive : " + tinhFibo.isAlive());

        tinhFibo.join();
        tinhSNT.join();

        System.out.println("Tinh Fibo alive : " + tinhFibo.isAlive());
        System.out.println("main : SNT = " + tinhSNT.result);
        System.out.println("main : Fn = " + tinhFibo.result);
    }

    private static int tinhSoFiboThuN(int n) {
        // Dãy số Fibonacci : 1 = ,f1 = 1, f2 = 2,3,5,8...
        // Viết hàm tính phần tử Fn
        int fn = 0;

        if (n <= 2) {
            fn = 1;
            return fn;
        }

        int f1 = 1, f2 = 1;
        for (int i = 3; i <= n; i++) {
            // tính phần tử thứ i
            fn = f1 + f2;
            f1 = f2;
            f2 = fn;
            try {
                Thread.sleep(1000);
                System.out.println("F - " + fn);
            } catch (InterruptedException ex) {
                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        return fn; // return fn
    }

    private static int tinhSoNguyenToThuN(int n) {
        // tìm số nguyên tố thứ n, bắt đầu từ 2
        int k = 0, sntThuN = 0;

        for (int j = 2; k < n; j++) {
            // kiểm tra j có phải là snt không?
            // snt là biến làm cờ, true thì j là snt
            boolean snt = true;

            for (int i = 2; i <= j - 1; i++) {
                if (j % i == 0) {
                    snt = false;
                    break;
                }
            }

            if (snt == true) {
                sntThuN = j;
                k++;

                try {
                    System.out.println("SNT - " + sntThuN);
                    Thread.sleep(1000);
                } catch (InterruptedException ex) {
                    Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                }
            }


        }

        return n;
    }
}
